package com.example.tools;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import reactor.core.publisher.Flux;

import java.util.Date;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

public class EmailTools {

    public static JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
    static{
        javaMailSender.setHost("smtp.qq.com");
        javaMailSender.setPort(465);
        javaMailSender.setUsername("1445546805@qq.com");
        // 邮箱的一个码
        javaMailSender.setPassword("eliglaevhezefhgg");
        javaMailSender.setDefaultEncoding("UTF-8");
        Properties conf = new Properties();
        conf.setProperty("mail.smtp.timeout", "25000");
        conf.setProperty("mail.smtp.auth", "false");
        conf.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        javaMailSender.setJavaMailProperties(conf);
    }

    public static void sendEmail(String email, String name){
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject("想聊聊吗！");
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        message.setFrom("1445546805@qq.com");
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("10*****16@qq.com","12****32*qq.com");
//        message.setTo("3467286007@qq.com", "940883614@qq.com", "877533939@qq.com", "2549097129@qq.com");
        message.setTo(email);
        // 设置邮件抄送人，可以有多个抄送人
//        message.setCc("12****32*qq.com");
        // 设置隐秘抄送人，可以有多个
//        message.setBcc("7******9@qq.com");
        // 设置邮件发送日期
        message.setSentDate(new Date());
        // 设置邮件的正文
        message.setText("----来自HNWL心理咨询室"
                + "\r\n"
                + "Hi, " + name  + "!"
                + "\r\n"
                + "有什么让你伤心难过或者困扰的事吗，可以来找我聊聊哦！"
                + "\r\n"
                + "地址：第三实验楼B024"
                + "\r\n"
                + "也可以打电话给我哦，我随时等待你的calling！"
                + "\r\n"
                + "电话：19812345678");
        // 发送邮件
        javaMailSender.send(message);
        System.out.println("发送邮件成功！！");
    }

    public static String sendRnumEmail(String email, int r_num, RedisTemplate<String, String> redisTemplate){
        // 构建一个邮件对象
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置邮件主题
        message.setSubject("想聊聊吗！");
        // 设置邮件发送者，这个跟application.yml中设置的要一致
        message.setFrom("1445546805@qq.com");
        // 设置邮件接收者，可以有多个接收者，中间用逗号隔开，以下类似
        // message.setTo("10*****16@qq.com","12****32*qq.com");
//        message.setTo("3467286007@qq.com", "940883614@qq.com", "877533939@qq.com", "2549097129@qq.com");
        message.setTo(email);
        // 设置邮件发送日期
        message.setSentDate(new Date());

        // 将验证码设置到redis中去
        redisTemplate.boundValueOps(email).set(r_num+"");
        redisTemplate.expire(email,60, TimeUnit.SECONDS);
        System.out.println("向redis中缓存成功！！");

        // 设置邮件的正文
        message.setText("----来自HNWL心理咨询室"
                + "\r\n"
                + "Hi! 你好"
                + "\r\n"
                + "这是你的验证码：" + r_num
                + "\r\n"
                + "这个验证码在1分钟内是有效的！");
        // 发送邮件
        javaMailSender.send(message);
        System.out.println("发送验证码邮件成功！！");
        return r_num+"";
    }
}
